home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / muscle.zip / MUSCLE.SLB (.txt) < prev    next >
MicroHelp  |  1991-04-16  |  59KB  |  1,024 lines

  1. MicroHelp Library
  2. pqtsr~0>?
  3.  INC.
  4.  4636 Huntridge Drive, Roswell, Georgia 30075
  5.  (404) 552-0565 
  6.  Press <Esc> to quit or any other key to continue the demo
  7. pqtsr~0>?4
  8.   The following system information was obtained using routines in Muscle
  9.  Are the following drivers loaded?
  10.   ANSI.SYS
  11.   QuickBasic Hercules driver..
  12.   BC7 ProISAM or ProISAMd
  13.   DOS Share
  14.   Current Directory..
  15.   Default Drive
  16.   Last Drive
  17. ! Valid Drives
  18.  You can obtain the same information from inside your BASIC programs. For
  19.  instance, you can check to see if the Hercules driver is loaded before you   
  20.  do any graphics that require it. If it is not loaded you can issue a warning 
  21.  and exit the program gracefully. Or you might be using file locking
  22.  procedures that require the DOS SHARE program to be loaded. Now you may
  23.  check to see if it is loaded BEFORE you encounter an error. Have you ever
  24.  wanted to find the valid drives on a system WITHOUT physically accessing the 
  25.  drives? Now you can.  Press a Key for the Menu.
  26. pqtsr~0>?4
  27.    Please enter the name of the file that you would like to edit
  28.  Include the drive and path if needed.
  29. pqtsr~0>?4
  30.    This file was not found
  31.  Do you wish to create it Y/N 
  32.  <Esc> to cancel
  33. pqtsr~0>?4
  34.  Muscle Demo 
  35.  You can create "PullDown" menus in your programs using a   
  36.  single CALL from MicroHelp's Muscle. These menus have
  37.  mouse support built right in. If you prefer, use the arrow 
  38.  keys on your keyboard or press a highlighted letter to
  39.  make the desired selection.
  40.  You can optionally add transparent "shadows" to your
  41.  pulldown menus. We have turned this feature on so you can  
  42.  see it in action.
  43.  Command Line Switches for This Demo
  44.  (to bypass the opening screens)
  45.  /M  to reach this menu.
  46.  /D  to start DirUtil.
  47.  /E  to start the editor.
  48.  /C  to start the calculator.
  49.  /B  for Black and White mode.
  50.  For Example: MUSCLE /D to run DirUtil without this menu
  51. pqtsr~0>?4
  52.  Welcome to MicroHelp's text editor
  53.  Change Configuration
  54.  Load File
  55.  Save File
  56.  Exit Editor 
  57. pqtsr~0>?4
  58.  You specified an illegal file
  59.  name. The file is not saved. 
  60.  Press a key
  61. pqtsr~0>?4
  62.  An error occured saving the  
  63.  file. The file is not saved. 
  64.  Press a key
  65. pqtsr~0>?4
  66.   This file is too large for  
  67.   this demo. Press a key to   
  68.  load a different file.
  69. pqtsr~0>?4
  70.  Please enter the following parameters (<Esc> will cancel)
  71.  Top Row 
  72.  Left Column 
  73.  Bottom Row 
  74.    Right Column 
  75.  Word Wrap Width 
  76.    Format 
  77.   (A for ASCII - P for Paragraph)
  78. pqtsr~0>?4
  79.   Use the arrow keys, PgUp, PgDn, Home and End to move around the   
  80.   list of codes. Press <Enter> or <Esc> to terminate this routine.  
  81. pqtsr~0>?4
  82. pqtsr~0>?4
  83. pqtsr~0>?4
  84.  MhHighLightM Demo 
  85.  Keyboard:
  86.    Use the cursor keys to move to the top row/left
  87.    column of the block you want to highlight and
  88.    then press <Enter>.
  89.    Then use cursor keys to highlight a portion of the 
  90.    text and then press <Enter> or <Esc>. Holding one  
  91.    of the <Shift> keys and using the arrow keys will  
  92.    shift the entire block in the indicated direction. 
  93.  Mouse:
  94.    Move mouse to top row/left column, then press and  
  95.    hold the left button while moving the mouse.
  96.    Release the left button to mark the block. Holding 
  97.    *Both* mouse buttons and then moving the mouse
  98.    will shift the entire block. If you don't want to  
  99.    mark a block, simply click the right button.
  100. pqtsr~0>?4
  101.  Instructions for Calendar 
  102.  Move the highlighted date with the cursor  
  103.  keys - change the month with <PgUp> and
  104.  <PgDn> or change the year with the <Ctrl-  
  105.  PgUp> & <Ctrl-PgDn>. You may move to the   
  106.  beginning or end of the 'selectable' range 
  107.  with the <Home> and <End> keys. (The
  108.  selectable range is defined by the
  109.  programmer and the range is NOT restricted 
  110.  to what we have used in this demo).
  111.  Days tagged with the <space bar> will be   
  112.  displayed at the conclusion of this demo   
  113.  along with the date last highlighted.
  114.  The programmer can assign "event" or
  115.  "holiday" descriptions to dates. These
  116.  special dates are displayed in a different 
  117.  color on the calendar. The description of  
  118.  the date is displayed when the user
  119.  highlights that date.
  120.  Press <Esc> or <Enter> to Exit
  121. pqtsr~0>?4
  122.    Please enter the name of the file that you would like to view
  123.  Include the drive and path if needed. Press <Esc> to cancel.
  124. pqtsr~0>?4
  125.    This file was not found
  126.      Press a Key
  127. pqtsr~0>?4
  128. pqtsr~0>?4
  129.  Muscle Demo 
  130.  You can create "PullDown" menus in your programs using a   
  131.  single CALL from MicroHelp's Muscle. These menus have
  132.  mouse support built right in. If you prefer, use the arrow 
  133.  keys on your keyboard or press a highlighted letter to
  134.  make the desired selection.
  135.  You can optionally add transparent "shadows" to your
  136.  pulldown menus. We have turned this feature on so you can  
  137.  see it in action.
  138.  Command Line Switches for This Demo
  139.  (to bypass the opening screens)
  140.  /M  to reach this menu.
  141.  /D  to start DirUtil.
  142.  /E  to start the Editor.
  143.  /C  to start the Calculator.
  144.  /B  for Black and white mode.
  145.  For example: MUSCLE /D to run DirUtil without this menu
  146. pqtsr~0>?4
  147.  1  Cursor Row: xxx  Column: xxx
  148.  2  Cursor Row: xxx  Column: xx
  149.  3  Cursor Row: xxx  Column: xxx
  150.  4  Cursor Row: xxx  Column: xx
  151. pqtsr~0>?4
  152.  Because the windowing routines are so fast, we have delays
  153.  built into all of the routines that you are about to see!
  154.  Not only that, but we're sending only one character at a
  155.  time, updating the cursor locations after each character, and 
  156.  handling word-wrap as well!
  157.  If you set the delay to zero, we'll stop updating the cursor  
  158.  positions and sending the sounds through, but we'll still be  
  159.  sending one character at a time.
  160.  Press a key to continue
  161. pqtsr~0>?4
  162. pqtsr~0>?4
  163. pqtsr~0>?4
  164.  Save Screen Demo
  165.  This program will demonstrate how  
  166.  you can save and restore portions  
  167.  of the screen simply and easily.   
  168.  First, we will save a portion of   
  169.  the screen, then we will erase it. 
  170.  After a keypress we will restore   
  171.  that portion of the screen.
  172.  While we are waiting, we will show 
  173.  you the code required to save and  
  174.  restore portions of the screen.
  175.  Note that the routine that saves   
  176.  the screen automatically reserves  
  177.  memory for the save screen
  178.  operation.
  179.  Press a Key to Continue
  180. pqtsr~0>?4
  181.  'Sample code for MhSaveScreen
  182.  MuVar.TopRow = 1
  183.  MuVar.LeftColumn = 8
  184.  ' \ Screen coordinates   
  185.  MuVar.BottomRow = 20
  186.  ' / for the save.
  187.  MuVar.RightColumn = 12   '/
  188.  MuVar.MemSeg = 0
  189.  IF MhScreenSave%(MuVar) < 0 THEN
  190.  'If this function returns a negative value
  191.  'then an error occured and the screen was
  192.  'not saved.
  193.  PRINT "Error ";MhEcode%;" returned"
  194.  END IF
  195.  'Place code in here that writes to the screen.
  196.  'For this example we will clear a portion of the  
  197.  'screen. Then wait for a keypress.
  198.  A$ = INPUT$(1)
  199.  'We are waiting here.
  200.  MuVar.Gen1 = 0
  201.  'To release memory
  202.  CALL MhScreenRestore(MuVar)
  203. pqtsr~0>?4
  204.  The portion of the screen
  205.  that was cleared has been
  206.  restored and the memory
  207.  allocated has been released. 
  208.   Press a key for the menu.   
  209. pqtsr~0>?4
  210.  MhDirectoryUtilsM 
  211.  Page 1 of 8 
  212.  MhDirectoryUtilsM is a file and directory management utility. It can be   
  213.   incorporated into your program as a CALLable procedure or made into a
  214.   standalone utility. This routine can use two windows, with a different
  215.   path in each, allowing you to tag multiple files for copy, delete, rename,  
  216.   attribute changes, or date/time stamp changes. You can also format disks,   
  217.   view files and directory trees, etc. This routine fully supports the
  218.   Microsoft mouse.
  219.  Most application programs written for vertical markets (where the end-
  220.   users have very little knowledge of DOS) can be much more useful if they
  221.   include a high-level DOS interface such as this.
  222.  When this routine is called, two windows are displayed along with a
  223.   command menu at the bottom of the screen. If you do not specify a
  224.   directory to place in either window, the current directory is placed on
  225.   the left and the help screen is placed on the right.
  226.  The following pages describe the action keys used in MhDirectoryUtilsM.   
  227.  <Page Dn> for More   <Esc> for Menu 
  228. pqtsr~0>?4
  229.  MhDirectoryUtilsM Keyboard and Mouse Usage 
  230.  Page 2 of 8 
  231.  <Tab>  Change active windows. If a directory is not currently   
  232.  selected for the window you are about to move to, you
  233.  will be prompted for a directory.
  234.      <Up Arrow>  Move the highlight bar up one file.
  235.  <Down Arrow>  Move the highlight bar down one file.
  236.  <Left Arrow>  Select the next command to the left on the "command
  237.  menu bar".
  238.  <Right Arrow>  Select the next command to the right on the "command
  239.  menu bar".
  240.  <PgUp>  Scrolls the list of selections in the active window
  241.  one page up.
  242.  <PgDn>  Scrolls the list of selections in the active window
  243.  one page down.
  244.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  245. pqtsr~0>?4
  246.  MhDirectoryUtilsM Keyboard and Mouse Usage 
  247.  Page 3 of 8 
  248.  <Space Bar>  "Tags" or untags the entry that is currently highlighted  
  249.  (this is a toggle).
  250.  <C>  Copy the tagged files in the active window to the
  251.  directory specified in the inactive window. If there is   
  252.  no directory defined for the inactive window, you will
  253.  be prompted for the destination path.
  254.  <M>  Move the tagged files in the active window to the
  255.  directory specified in the inactive window. If there is   
  256.  no directory defined for the inactive window, you will
  257.  be prompted for the path. If the destination path is on   
  258.  the same drive, only the files' directory entry will be   
  259.  moved. If the destination path is on a different drive,   
  260.  the file will be copied, then the original will be
  261.  deleted.
  262.  <D>  Delete the files tagged in the active window.
  263.  <N>  Rename the file that is highlighted in the active
  264.  window.
  265.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  266. pqtsr~0>?4
  267.  MhDirectoryUtilsM Keyboard and Mouse Usage 
  268.  Page 4 of 8 
  269.  <A>  Modify a file's attributes. You can change the read/write,
  270.  hidden, system, and archive attributes.
  271.  <S>  Sort the files in the active window by filename, extension,
  272.  date/time, size, or attributes. This sort affects only the
  273.  way the files are displayed. It does not physically alter
  274.  your disk directory.
  275.  <K>  Define a file specification mask for the active window, with   
  276.  DOS "wildcards" allowed. For example, you can restrict the
  277.  files displayed in the active window to "*.BAS".
  278.  <L>  Define the drive:\directory that will be displayed in the
  279.  left window.
  280.  <R>  Define the drive:\directory that will be displayed in the
  281.  right window.
  282.  <E>  Change the date/time for the tagged files.
  283.  <F>  Format a diskette.
  284.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  285. pqtsr~0>?4
  286.  MhDirectoryUtilsM Keyboard and Mouse Usage 
  287.  Page 5 of 8 
  288.  <V>  View a file in text or HEX format.
  289.  <T>  Change the current directory for the active window.
  290.  Allows you to select the new directory from a graphic
  291.  "tree".
  292.  <Esc>  Returns control to the CALLing program.
  293.  When scrolling through the entries, if an attempt is made to move up
  294.   past the first entry or down past the last entry, the routine will not
  295.   move the highlight bar. In your programs, you can disable this feature so   
  296.   the highlight bar will "wrap" around.
  297.  The mouse can be used to highlight and scroll through the files, or to
  298.   pick a command from the menu at the bottom of the screen. The left mouse
  299.   button serves multiple purposes: If clicked on a file, it highlights and
  300.   tags the file that the mouse cursor is on; If clicked anywhere in the
  301.   inactive window, that window is made "active"; If clicked on a command,
  302.   that command is executed. Clicking the right button will cause this
  303.   routine to return control to the CALLing program.
  304.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  305. pqtsr~0>?4
  306.  MhDirectoryUtilsM Technical Information 
  307.  Page 6 of 8 
  308.  A number of Muscle routines are used in MhDirectoryUtilsM, including
  309.   low-level routines such as file copy, disk format, memory allocation and
  310.   release, file rename, and screen save and restore.
  311.  Some of the high-level routines are used in the MhDirectoryUtilsM
  312.   routine as well. These include the mouse scroll bar, pick from drives,
  313.   pick from directory tree, and file display.
  314.  Parameters Passed to MhDirectoryUtilsM
  315.  MuVar - The user-defined TYPE that contains information such as:
  316.  Colors used in various parts of the screen; Whether to
  317.  save and restore the screen; Cursor size information; The   
  318.  type of sound to use; Maximum number of files in a
  319.  directory to load into memory, etc.
  320.  LeftDir$ - The drive:\directory for the left window.
  321.  RightDir$ - The drive:\directory for the right window.
  322.   (List continued on next page)
  323.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  324. pqtsr~0>?4
  325.  MhDirectoryUtilsM Technical Information 
  326.  Page 7 of 8 
  327.  Parameters Passed to MhDirectoryUtilsM (continued)
  328.  LeftMask$ - File specification mask for the left window.
  329.  RightMask$ - File specification mask for the right window.
  330.   Terminator$() - An array containing key presses that will terminate the
  331.  routine.
  332.  HelpLevel% - Potentially used for on-line help.
  333.  Parameters Returned from MhDirectoryUtilsM
  334.  MuVar - Contains the key that was pressed to terminate input.
  335.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  336. pqtsr~0>?4
  337.  MhDirectoryUtilsM Technical Information 
  338.  Page 8 of 8 
  339.  Sample Code for MhDirectoryUtilsM
  340.  'Demonstration of MicroHelp Directory Utilities
  341.  DEFINT A-Z
  342.  REM $INCLUDE: 'MHMUSCLE.BI'
  343.  DIM MuVar AS MhMuscleType
  344.  CALL MhMuscleInit(MuVar)
  345.  MuVar.MaxFiles = 510
  346.  'Maximum number of files
  347.  REDIM Terminator$(1)
  348.  Terminator$(1) = CHR$(27)
  349.  CALL MhDirectoryUtilsM(MuVar, LeftDir$, RightDir$, LeftMask$,_
  350.  RightMask$, Terminator$(), HelpLevel%)
  351.  This is really all there is to it. If you have already
  352.  CALLed MhMuscleInit, then you can place this utility in your
  353.  program with as little as FOUR lines of code!
  354.  <Page Up> for Previous   <Esc> for Menu 
  355. pqtsr~0>?4
  356.  MhTextEditor 
  357.  Page 1 of 5 
  358.  MhTextEditor is a CALLable text editor that includes optional word-wrap.  
  359.   The editor supports the following functions:
  360.  <Up-Arrow>  Move up one line.
  361.   <Down-Arrow>  Move down one line.
  362.  <PgUp>  Move up one page.
  363.  <PgDn>  Move down one page.
  364.  <Home>  If not on the left-most column of the window, move to that
  365.  column, else move to the beginning of the current line.
  366.      <End>  Move to the end of the current line.
  367.  <Insert>  Toggle between insert and overstrike modes.
  368.      <Del>  Delete the character at the cursor position.
  369.    <Backspace>  Delete the character to the left.
  370.      <Tab>  Move one tab stop to the right.
  371.  <Ctrl-Rt>  Move right one word.
  372.  <Ctrl-Lt>  Move left one word.
  373.    <Ctrl-Home>  Move to the first line of text.
  374.  <Ctrl-End>  Move to the last line of text
  375.  <Ctrl-N>  Insert a line at the current row.
  376.  <Ctrl-T>  Delete the word that the cursor is on.
  377.  <Ctrl-Y>  Delete the current line.
  378.  <Page Dn> for More   <Esc> for Menu 
  379. pqtsr~0>?4
  380.  MhTextEditor 
  381.  Page 2 of 5 
  382.  The mouse can be used to position the cursor within the window by
  383.   clicking the left button at the desired location. It can be used to scroll  
  384.   through the text by clicking the left button on the scroll bar. Clicking
  385.   the right button will cause this routine to exit.
  386.  The editor in this demo has three function keys active: F1 to change the  
  387.   editor configuration; F2 to load a file; F3 to save a file. Be sure to
  388.   save a file before exiting or reconfiguring the editor or your text could   
  389.   be lost.
  390.  Using the configuration option, you may change the size of the editing
  391.   window and change the format of the output file from a CR-LF at the end of  
  392.   each line (regular ASCII) to a CR-LF after each paragraph (paragraph
  393.   format). If you use the paragraph format, the editor will reformat the
  394.   paragraphs if you change the size of the editing window. If you use regular 
  395.   ASCII format, the editor does not reformat the paragraphs to the new line   
  396.   lengths.
  397.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  398. pqtsr~0>?4
  399.  MhTextEditor 
  400.  Page 3 of 5 
  401.  Parameters Passed to Routine
  402.  MuVar - A TYPEed variable containing information such as:
  403.  Whether to save and restore the screen; Screen
  404.  coordinates for the window; Type of border to draw around 
  405.  the window; Colors used in the display; The word wrap
  406.  width; The type of sound to use; Cursor size information; 
  407.  etc.
  408.  Title$ - A string which is displayed on the top box border.
  409.  Text$() - A string array in which the edited text is stored. The
  410.  editor expects the text in the form of one paragraph per  
  411.  element. If an element contains text longer than
  412.  MuVar.WordWrapWidth, that text will automatically be
  413.  formatted.
  414.  Terminator$() - A string array containing the keypresses that will cause  
  415.  this routine to exit.
  416.  HelpLevel% - May be used to integrate on-line help.
  417.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  418. pqtsr~0>?4
  419.  MhTextEditor 
  420.  Page 4 of 5 
  421.  Parameters Returned from Routine
  422.  Text$() - This string array contains the edited text. When word-wrap is   
  423.  active, the edited text is returned to the CALLing program in   
  424.  the form of one paragraph per element of Text$(). If you pass   
  425.  MuVar.WordWrapWidth as a negative value, the text is returned   
  426.  in Text$() just as it appears in the editing window - one line  
  427.  per element.
  428.  MuVar - This TYPEd variable contains the key that was pressed to
  429.  terminate input and the highest element in Text$() that
  430.  contains text.
  431.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  432. pqtsr~0>?4
  433.  MhTextEditor 
  434.  Page 5 of 5 
  435.  Editor Sample Code
  436.  REM $INCLUDE: 'MHMUSCLE.BI'
  437.  DEFINT A-Z
  438.  DIM MuVar AS MhMuscleType
  439.  CALL MhMuscleInit(Tb2)   'Initialize Muscle variables
  440.  DIM Text$(100)
  441.  'Create an array to hold the text
  442.  DIM Terminator$(1)
  443.  'Holds our terminator keys
  444.  Terminator$(1) = CHR$(27)
  445.  'Optionally you may set the window coordinates, the word
  446.  'wrap width, the title, and load the text array
  447.  CALL MhTextEditor(MuVar, Title$, Text$(), Terminator$(),_
  448.  HelpLevel%)
  449.  'MuVar.LastElement contains lines/paragraphs of text
  450.  'MuVar.Ascii contains the ASCII code of Terminator key
  451.  'MuVar.Scan contains the scan code of Terminator key
  452.  <Page Up> for Previous   <Esc> for Menu 
  453. pqtsr~0>?4
  454.  MhPopUpCalc 
  455.  Page 1 of 5 
  456.  MhPopUpCalc is a four-function calculator with ten memory locations and   
  457.   a scrolling tape. It can toggle between decimal and HEX mode and can
  458.   optionally stuff the result of a calculation into the keyboard buffer.
  459.  MhPopUpCalc will automatically determine the size of the current text
  460.   display and draw the calculator at the bottom of the screen. The tape
  461.   scrolls vertically to the top of the screen.
  462.  When MhPopUpCalc is called the first time, it allocates a memory block
  463.   for screen save/restore functions. This memory block is automatically
  464.   released when your program terminates. If you wish to release that memory   
  465.   so it can be used for other purposes, pass a value of -1 in
  466.   MuVar.DontRestore to MhPopUpCalc. It will immediately release the memory
  467.   and return.
  468.  The following pages describe the action keys used in MhPopUpCalc.
  469.  <Page Dn> for More   <Esc> for Menu 
  470. pqtsr~0>?4
  471.  MhPopUpCalc Keyboard Usage 
  472.  Page 2 of 5 
  473.  <%> Based on the value visible in the display, calculates and displays a  
  474.  percentage of the running total.
  475.  <$> Toggles the "Dollar Mode" on/off. While on, the decimal is set to
  476.  two places.
  477.  <I> Toggles the "Integer Mode" on/off. This limits the calculator's
  478.  range of numbers to -32768 to +32767.
  479.  <H> Displays the calculator's help screens.
  480.    <MD> Displays the contents of the calculator's 10 memory registers.
  481.    <MZ> Zeros the values stored in calculator's memory.
  482.  <N> Negates the value in the calculator's display.
  483.    <Rn> Recall memory register "n" (0-9).
  484.    <Sn> Store the value in the display to memory register #n (0-9).
  485.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  486. pqtsr~0>?4
  487.  MhPopUpCalc Keyboard Usage 
  488.  Page 3 of 5 
  489.  <T>  Toggles the "Hex Mode" on/off. Allows you to convert the
  490.  contents of the display and tape to hex. You can also enter   
  491.  numbers and perform calculations in hex.
  492.  <X>  Clears the current entry in the display. Like the "CE"
  493.  function available in most calculators.
  494.  <Z>  Zeros the running total, the calculator's display, and
  495.  "cuts" the tape.
  496.  <Alt-F>  Stuffs the value in the calculator's display into the
  497.  keyboard buffer and returns control to the CALLing program.   
  498.    <Ctrl-Left>  Moves the calculator to the left.
  499.   <Ctrl-Right>  Moves the calculator to the right.
  500.      <Esc>  Returns control to the CALLing program.
  501.  <Enter>  The same as "=".
  502.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  503. pqtsr~0>?4
  504.  MhPopUpCalc Technical Information 
  505.  Page 4 of 5 
  506.  Parameters Passed to Routine
  507.  MuVar - A TYPEd variable that contains much of the information
  508.  passed to this routine, including: Whether to restore
  509.  the screen or not; The colors used in the display; The
  510.  type of sound to use.
  511.  Terminator$() - A string array containing the keys a user can press to
  512.  exit from this routine.
  513.  Parameters Returned from Routine
  514.  MuVar - The key that was pressed to terminate input is returned   
  515.  in the MuVar TYPEd variable.
  516.  Result$ - Contains the contents of the calculator's display when
  517.  the terminator key was pressed.
  518.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  519. pqtsr~0>?4
  520.  MhPopUpCalc Technical Infomation 
  521.  Page 5 of 5 
  522.  'Demonstrates MhPopUpCalc SUBprogram
  523.  DEFINT A-Z
  524.  REM $INCLUDE: 'MHMUSCLE.BI'
  525.  DIM MuVar AS MhMuscleType
  526.  DIM Terminator$(1)
  527.  'DIM our Terminator key array
  528.  Terminator$(1) = CHR$(27)
  529.  CALL MhTb2Init(MuVar)
  530.  'Initialize routine
  531.  CALL MhPopUpCalc(MuVar, Terminator$(), Result$)
  532.  <Page Up> for Previous   <Esc> for Menu 
  533. RINT "the calculator again.."
  534.  A$ = INPUT$(1)
  535.  'Wait for a key
  536.  LOOP UNTIL A$ = CHR$(27)   'Repeat cycle
  537.  MuVar.DontRestore = -1
  538.  'Tells routine to release memory
  539.  CALL MhPopUpCalc(MuVar, Terminator$(), Result$)
  540.  <Page Up> for Previous   <Esc> for Menu 
  541. pqtsr~0>?4
  542.  Display a directory tree for what drive
  543. pqtsr~0>?4
  544. This is a list of
  545. valid drives on your  
  546. system. Use the arrow 
  547. keys with <Enter>, the
  548. mouse, or the drive   
  549. letter to select.
  550. <Esc> aborts.
  551. pqtsr~0>?4
  552.  You Have Selected
  553. pqtsr~0>?4
  554.  Input a number to convert to words
  555.      (Press <Esc> to Exit)
  556.  Converted to words it appears as
  557.    'Sample code
  558.    INPUT "Input a number to convert to words" ;Z#
  559.    A$ = STR$(Z#)
  560.    PRINT MhNumberDesc$(A$)
  561. pqtsr~0>?4
  562.  Intercepting <Ctrl-C> and <Ctrl-Break> 
  563.  Page 1 of 1 
  564.  BASIC's INPUT and LINE INPUT statements are useful in small utility
  565.   programs for accepting unfiltered, unmasked input from the user with a
  566.   minimum of effort by the programmer. However, if the user presses <Ctrl-C>  
  567.   or <Ctrl-Break> while either of these statements are active, your program   
  568.   terminates immediately and does not have an opportunity to perform any of   
  569.   its housekeeping tasks prior to program termination, such as closing
  570.   files, etc.
  571.  CALLing the MhBreakDisable routine disables these keys so the
  572.   programmer doesn't have to be concerned about an unplanned program
  573.   termination. The effect of this routine is automatically disabled upon
  574.   termination of your program.
  575.  If you wish to enable <Ctrl-C> and <Ctrl-Break> prior to program
  576.   termination, CALL the MhBreakReEnable routine.
  577.  <Esc> for Menu 
  578. pqtsr~0>?4
  579.  Mouse Routines 
  580.  Page 1 of 1 
  581.  Muscle has a full complement of assembler and BASIC routines to make
  582.   your programs aware of and responsive to a mouse. This includes routines
  583.   for controlling the visibility, location, size, shape, and other
  584.   attributes of the mouse cursor as well as routines to report the
  585.   activation of mouse buttons.
  586.  The Muscle mouse routines include versions for use in text video
  587.   modes (where locations are addressed in rows/columns) and graphics modes
  588.   (where locations are addressed in pixels). The names of such paired
  589.   routines differ only by the presence of the letter G at the end of the
  590.   names for (g)raphics compatible routines.
  591.  <Esc> for Menu 
  592. pqtsr~0>?4
  593.  Change Scientific Notation to Decimal 
  594.  Page 1 of 1 
  595.  MhScientificToDec is a FUNCTION that uses a string representation of
  596.   a number that is in scientific notation to create a new string that is in   
  597.   decimal notation. For example, it would convert "1.03212E-03" to
  598.   ".0013212". If a number is passed in decimal notation, it is simply
  599.   returned unmodified.
  600.  Many assembler routines which are designed to manipulate floating-point   
  601.   numbers require the number to be passed to them in a string format, using   
  602.   STR$(Number). Unfortunately, BASIC sometimes returns the result in
  603.   scientific notation. When this is not desirable, the routine
  604.   MhScientificToDec can convert the value to decimal notation.
  605.  <Esc> for Menu 
  606. pqtsr~0>?4
  607.  Formatting Numbers in Basic Strings 
  608.  Page 1 of 2 
  609.  MhStringUsingM is a FUNCTION, similar to BASIC's PRINT USING statement
  610.   (but much faster), that can format a number according to a mask chosen by   
  611.   the programmer and return the result as a string variable. In fact, the
  612.   mask definition characters and format are almost exactly like PRINT USING,  
  613.   as it works with numbers.
  614.  However, unlike PRINT USING, a string representation of a number is
  615.   passed to the routine instead of the actual numeric variable and the
  616.   resulting string is returned by the FUNCTION instead of being displayed. A  
  617.   string that is passed to the routine (the mask) directs the formatting of   
  618.   the resultant string. This includes locating decimal points, choosing the   
  619.   number of digits, grouping digits in threes with commas, positioning the
  620.   number's sign, and positioning dollar signs. MhStringUsingM can accept
  621.   numbers stored in scientific notation as input.
  622.  The characters on the following page are the valid mask characters
  623.   recognized by MhStringUsingM.
  624.  <Page Dn> for More   <Esc> for Menu 
  625. pqtsr~0>?4
  626.  MhStringUsingM Mask Characters 
  627.  Page 2 of 2 
  628.  . =  Represents the placement of the decimal point.
  629.  # =  Represents a digit position.
  630.  , =  A comma anywhere in the Format$ causes a comma to be placed
  631.      after every third digit to the left of the decimal place.
  632.  + =  At the beginning or end, causes the sign of the number to be
  633.      placed before or after the number, respectively.
  634.  - =  At the end, causes negative numbers to be returned with a trailing   
  635.      minus sign.
  636.  $ =  Anywhere in Format$ causes a dollar sign to be placed at that
  637.      position in the resulting string (different than BASIC).
  638.    $$ =  Anywhere in Format$ causes a dollar sign to be placed to the
  639.      immediate left of the formatted number.
  640.  <Page Up> for Previous   <Esc> for Menu 
  641. pqtsr~0>?4
  642.    Please enter the name of the file that you would like to save
  643.  Include the drive and path if needed.
  644. pqtsr~0>?4
  645.  Pick From Tree 
  646.  Use the cursor keys to move the highlight bar to the  
  647.  desired selection. Or click on the desired selection  
  648.  with the mouse. Pressing <Enter> will select a
  649.  directory, or clicking on the same selection a second 
  650.  time with the mouse will select a directory.
  651.  Press <Esc> to abort
  652. pqtsr~0>?4
  653.  Please Stand By - Loading Tree 
  654. pqtsr~0>?4
  655.  Muscle Ordering Information
  656.  You can order Muscle directly from MicroHelp. The cost is $189.00 per
  657.    copy, plus shipping and handling ($6.00 UPS ground in the USA (business
  658.    addresses only!), $12.00 UPS second day air in the USA, $16.00 in
  659.    Canada, and $40.00 elsewhere). Georgia residents, please add sales tax.
  660.    Please call 1-800-922-3383 (in Georgia or outside USA, call
  661.    404-594-1185). For orders only please, send a FAX to 404-594-9629.
  662.  We welcome MasterCard, Visa, or COD (add $4.00 for COD). You can also
  663.    order via mail by sending a check or money order to:
  664.  MicroHelp Inc.
  665.  4636 Huntridge Drive
  666.  Roswell, GA 30075-2012
  667.  MicroHelp products come with a 30 day money-back performance guarantee.  
  668.    If it doesn't work as advertised and we don't fix it within 10 working
  669.    days, you can return it for a refund of your purchase price.
  670.  MicroHelp's Muscle is not copy protected and there are no
  671.    royalties! We offer free technical support any business day (except
  672.    holidays) 9:00 AM to 5:00 PM EST/EDT.
  673.  <Esc> to Exit 
  674. pqtsr~0>?4
  675.  Pick a Directory From Drive
  676. pqtsr~0>?4
  677.  System Requirements 
  678.  Page 1 of 1 
  679.  In order to use Muscle, you'll need the following:
  680.  An IBM PC, XT, AT, PS/2, 80386, 80486 or 100% compatible system.
  681.  Microsoft QuickBASIC 4.00b+, or MS BASIC 6.x, or MS BASIC PDS 7.x+.
  682.  PC-DOS or MS-DOS 2.1 or later. Please see our brochure for routines
  683.  that may require later versions of DOS.
  684.  An 80 column monitor.
  685.  A 360K floppy disk drive.
  686.  A hard disk drive.
  687.   MS and MS-DOS are registered trademarks and Microsoft QuickBASIC is a
  688.   trademark of Microsoft Corporation.
  689.   PC-DOS, IBM and PS/2 are trademarks of IBM Corporation.
  690.  <Esc> for Menu 
  691. pqtsr~0>?4
  692.  Results 
  693. pqtsr~0>?4
  694.  Directions for Pick123 
  695.  Make a selection by using the arrow keys to position the
  696.  "bounce" bar and press <Enter>. You can also select an item by 
  697.  pressing the letter that appears highlighted within that item. 
  698.  Or, you can select an item by "clicking" on it with the mouse. 
  699. pqtsr~0>?4
  700.  Directions for AsmInput 
  701.  You can edit the default response presented here. Arrow
  702.  keys, home, end, delete, insert, and others respond in the 
  703.  "normal" manner for editing. This routine is written in
  704.  assembler for the smallest possible size.
  705. pqtsr~0>?4
  706.  Directions for Pick-Tag 
  707.  Move the highlight bar with
  708.  the arrow keys. Select or
  709.  deselect items with the
  710.  spacebar. The Page-up, Page-   
  711.  down, home, and end keys will  
  712.  also move you through the
  713.  list.
  714.  The mouse is fully functional  
  715.  in this routine. You can
  716.  select and deselect items with 
  717.  the mouse or use the scroll
  718.  bar to move through the list.  
  719.  Pressing Enter, Esc, the right 
  720.  mouse button or "double
  721.  clicking" an item will exit
  722.  this routine.
  723. pqtsr~0>?4
  724.  Directions for Field Edit 
  725.  Use the <Right> and <Left) arrow keys to move one character 
  726.  in the obvious direction. <Ctrl-Left> and <Ctrl-Right>
  727.  arrows move from word to word. <Del> and <Backspace> work   
  728.  exactly as you expect and <Ins> toggles the insert state.   
  729.  <Home> and <End> move you to the first and last characters  
  730.  respectively.
  731.  The input field can be wider than the physical coordinates  
  732.  on the screen, giving you a "virtual" input field. Input
  733.  "masks" can be used to restrict input to certain
  734.  characters. Input in this case is limited to lower case
  735.  letters, but only because we wanted it that way!
  736. pqtsr~0>?4
  737.  Directions for Full Screen Input 
  738.  Use the up and down arrow keys or PgUp and PgDn to move   
  739.  around the screen. Pressing <Tab> or <Enter> moves forward   
  740.  one field, <Shift-Tab> moves back one field, <Esc>
  741.  terminates the routine. All other "normal" editing keys work 
  742.  like you might expect them to work.
  743.  Notice that some fields will restrict the entry to
  744.  certain characters. This is only because we told it to! Your 
  745.  programs can use these same "masks", other masks, or no
  746.  masks at all for data entry.
  747. pqtsr~0>?4
  748.  Directions for Virtual Screen Input 
  749.  Use the up and down arrow keys or PgUp and PgDn to move   
  750.  around the screen. Pressing <Tab> or <Enter> moves forward   
  751.  one field, <Shift-Tab> moves back one field, <Esc>
  752.  terminates the routine. All other "normal" editing keys work 
  753.  like you might expect them to work.
  754.  Notice that some fields will restrict the entry to
  755.  certain characters. This is only because we told it to! Your 
  756.  programs can use these same "masks", other masks, or no
  757.  masks at all for data entry.
  758. pqtsr~0>?4
  759.  Directions for Spread Sheet Input 
  760.  Use the up and down arrow keys or PgUp and PgDn to move   
  761.  around the screen. Pressing <Tab> or <Enter> moves forward   
  762.  one field, <Shift-Tab> moves back one field, <Esc>
  763.  terminates the routine. All other "normal" editing keys work 
  764.  like you might expect them to work.
  765.  Notice that some fields will restrict the entry to
  766.  certain characters. This is only because we told it to! Your 
  767.  programs can use these same "masks", other masks, or no
  768.  masks at all for data entry.
  769. pqtsr~0>?4
  770.  Results from Routine 
  771. pqtsr~0>?4
  772.  MicroHelp array routines 
  773.  Page 1 of 1 
  774.  "MicroHelp Arrays" allow you to use all available DOS or EMS memory to store 
  775.  data. There are two classes of MicroHelp arrays: Muscle Arrays and Huge
  776.  String Arrays.
  777.  Use "Muscle Arrays" to hold numeric data, fixed-length strings, and
  778.  user-defined types.  "Huge String Arrays" are used primarily to store
  779.  variable-length strings.
  780.  Using DOS memory, MicroHelp arrays are limited to the amount of available
  781.  memory, which will normally be the "far heap". Using EMS memory, they are
  782.  limited only by the amount of LIM expanded memory installed in the PC.
  783.  Regardless of which memory you use, each array can be DIMensioned to the
  784.  positive limit of a long integer (approximately 2 billion elements).
  785.  MicroHelp arrays provide several advantages over BASIC arrays, you should
  786.  use them when you need one of the following special features:
  787.  EMS storage
  788.  More than 32767 elements
  789.  Arrays greater than 128K with odd-length elements
  790.  Byte arrays
  791. pqtsr~0>?4
  792.  MicroHelp array routines 
  793.  Page 1 of 1 
  794.  "MicroHelp Arrays" allow you to use all available DOS or EMS memory to store 
  795.  data. There are two classes of MicroHelp arrays: Muscle Arrays and Huge
  796.  String Arrays.
  797.  Use "Muscle Arrays" to hold numeric data, fixed-length strings, and
  798.  user-defined types.  "Huge String Arrays" are used primarily to store
  799.  variable-length strings.
  800.  Using DOS memory, MicroHelp arrays are limited to the amount of available
  801.  memory, which will normally be the "far heap". Using EMS memory, they are
  802.  limited only by the amount of LIM expanded memory installed in the PC.
  803.  Regardless of which memory you use, each array can be DIMensioned to the
  804.  positive limit of a long integer (approximately 2 billion elements).
  805.  MicroHelp arrays provide several advantages over BASIC arrays, you should
  806.  use them when you need one of the following special features:
  807.    EMS storage
  808.    More than 32767 elements
  809.    Arrays greater than 128K with odd-length elements
  810.    Byte arrays
  811.  <Esc> for Menu 
  812. pqtsr~0>?4
  813.  Date FUNCTIONs 
  814.  Shown below are results from some of the date FUNCTIONs
  815.  found in Muscle. Date math (adding and subtracting days,
  816.  months or years to or from a date), date differences, day of 
  817.  the week and others are routines that you can CALL.
  818.  Time FUNCTIONs that provide time math and time differences   
  819.  are provided as well.
  820. pqtsr~0>?4
  821.  Environment FUNCTIONs 
  822.  Shown below are results from MhGetEnvironment routine in
  823.  Muscle. The window below shows the current "master"
  824.  environment.
  825.  Muscle provides routines to get and set the "master"
  826.  environment, the "parent" environment, and the "local"
  827.  environment.
  828. pqtsr~0>?4
  829. can create "PullDown" menus in your programs using a   
  830.  single CALL from MicroHelp's Muscle. These menus have
  831.  mouse support built right in. If you prefer, use the arrow 
  832.  keys on your keyboard or press a highlighted letter to
  833.  make the desired selection.
  834.  You can optionally add transparent "shadows" to your
  835.  pulldown menus. We have turned this feature on so you can  
  836.  see it in action.
  837.  Command Line Switches for This Demo
  838.  (to bypass the opening screens)
  839.  /M  to reach this menu.
  840.  /D  to start DirUtil.
  841.  /E  to start the Editor.
  842.  /C  to start the Calculator.
  843.  /B  for Black and white mode.
  844.  For example: MUSCLE /D to run DirUtil without this menu
  845. pqtsr~0>?4
  846.  Muscle Error Text Routines 
  847.  Muscle provides you with a number of routines to get verbose 
  848.  descriptions of error codes. You can use MhEMSErrorText for  
  849.  EMS errors, MhBASICErrorText for BASIC errors,
  850.  MhMuscleErrorText for Muscle errors, and
  851.  MhExtendedDOSErrorText for extended DOS error code
  852.  descriptions.
  853.  When you press a key we will show you the error code
  854.  descriptions returned by the muscle routines using the
  855.  MhMuscleErrorText routine.
  856. pqtsr~0>?4
  857.  SuperShell 
  858.  MicroHelp's SuperShell replaces the regular BASIC SHELL and 
  859.  provides several enhancements. Some of those are:
  860.   Spools most of your application to EMS or to disk,
  861.  leaving only a small "kernal" in memory.
  862.   You can place a message on a portion of the screen and  
  863.  tell SuperShell not to scroll those lines.
  864.   A clock that runs in the "background".
  865.   Can "exit" automatically after a certain period of
  866.  keyboard inactivity.
  867.  Press a key to see it in action. <Esc> will return you the  
  868.  menu without running the SHELL demo.
  869. pqtsr~0>?4
  870.  SuperShell 
  871.  MicroHelp's SuperShell replaces the regular BASIC SHELL and 
  872.  provides several enhancements. Some of those are:
  873.   Swaps most of your application to EMS or to disk,
  874.  leaving only a small "kernel" in memory.
  875.   You can place a message on a portion of the screen and  
  876.  tell SuperShell not to scroll those lines.
  877.   A clock that runs in the "background".
  878.   Can "exit" automatically after a certain period of
  879.  keyboard inactivity.
  880.  Press a key to see it in action. <Esc> will return you the  
  881.  menu without running the SHELL demo.
  882. pqtsr~0>?4
  883.  Clock 
  884.  Muscle can provide a clock that will
  885.  operate in the "background". Once you   
  886.  turn it on, it will continue to run
  887.  untill you turn it off.
  888.  You can have 12 and 24 hour clocks, you 
  889.  also specify whether the seconds
  890.  display is turned on or off.
  891.  This clock will run until you end the   
  892.  clock demo by pressing a key.
  893. pqtsr~0>?4
  894.  Search a logical drive 
  895.  The MhSearchVoulume FUNCTION can search a logical drive for 
  896.  files that match a certain file specification. Select a
  897.  drive below and we will find 5 files that match the "*.BAT" 
  898.  file spec.
  899. pqtsr~0>?4
  900.  Search a series of paths 
  901.  The MhSearchPath FUNCTION can search a series of paths for  
  902.  a file. Press any key except <Esc> and we will search your  
  903.  path for BC.EXE. <Esc> will return you to the menu.
  904. pqtsr~0>?4
  905.  MicroHelp Muscle Overview 
  906.  Muscle is MicroHelp's newest add-on library for BASIC programmers. While
  907.  it was designed with the professional programmer in mind, the routines are   
  908.  easy enough to use by almost anyone who has a thorough knowledge of BASIC.   
  909.  The product consists of SUBprograms and FUNCTIONs, which are written using   
  910.  two languages:
  911.  Assembly language code is used for routines that are speed critical.
  912.  Another advantage to using assembly language is size - you get the
  913.  smallest possible programs. Please note that you don't need any
  914.  knowledge of assembly language in order to use this product.
  915.  BASIC code is used for routines that are not speed critical, or where
  916.  our customers will want to modify the code.
  917.  Muscle comes with complete source code, three fully indexed manuals, example 
  918.  programs, and tech support. You can use our routines in your .EXE programs   
  919.  with no royalties and no restrictions.
  920.  After you've tried the demo program, please feel free to call us if you have 
  921.  any questions or if you want to order the product. Our telephone numbers are 
  922.  1-800-922-3383 and (404) 594-1185. FAX (404) 594-9629 (orders only, please). 
  923.  <Page Dn> for More   <Esc> for Menu 
  924. pqtsr~0>?4
  925.  Muscle Highlights 
  926.  The high-level routines in Muscle take advantage of an initialization
  927.   routine called MhMuscleInit. This routine is designed to make your life
  928.   easier by automatically handling initialization of the "MuVar" TYPED
  929.   variable (used to simplify passing parameters to routines) and resetting
  930.   the mouse if one is installed. It also assigns default colors according to  
  931.   the type of display adapter it finds, provides information about the
  932.   display adapter and sets the cursor to an appropriate size - all with a
  933.   single CALL. This enhances the "portability" of your programs by
  934.   automatically adapting them to the characteristics of different systems.
  935.  Following this screen is a demonstration of some of the features found
  936.   in Muscle. For many high-level routines, you will find a description,
  937.   sample code showing how it is invoked from a program, and a working
  938.   demonstration of the routine. Many other routines are either described in   
  939.   detail, or have a functioning demonstration. If you need information
  940.   about routines not included in the demo, please refer to the brochure.
  941.  Please note that the video "special effects" used in this program, such   
  942.   as the "radar arm", the "propeller", etc. are not part of the Muscle
  943.   product. These features are found in QB/Pro Volume 5 (NovaScreen).
  944.  <Page Up> for Previous   <Page Dn> for More   <Esc> for Menu 
  945. OPENING
  946. SYSTEM
  947. EDITORFILENAME
  948. FILENOTFOUND
  949. EDITORTEXT
  950. ILLEGALFILE
  951. ERRORSAVINGFILER
  952. FILETOOBIG
  953. EDITORCONFIGUREk
  954. ASCIITABHELPj
  955. ASCIIBOXB
  956. CALENDARBOX
  957. U    HILITEBOX
  958. CALENDARHELP
  959. DISPLAYFILENAME]
  960. FILENOTFOUNDDISP#
  961. BLANKCALENDARBOX
  962. WINDOW4
  963. WINDOWTEXT
  964. BLANKCALENDARBOX2
  965. WIPEIT1-1-20-5l&
  966. DOSAVESCREENOPEN
  967. DOSAVESCREENCODEV)
  968. DOSAVESCREENCLOSE
  969. DIRUTIL1
  970. DIRUTIL2
  971. DIRUTIL3
  972. DIRUTIL49<
  973. DIRUTIL5
  974. DIRUTIL6
  975. DIRUTIL7
  976. DIRUTIL8
  977. EDITOR1
  978. EDITOR2,X
  979. EDITOR3c]
  980. EDITOR4
  981. EDITOR5
  982. POPCALC1
  983. POPCALC2Fn
  984. POPCALC3
  985. POPCALC4
  986. POPCALC5
  987. TREEPATHNAME_
  988. PICKFROMDRIVES
  989. TREEPATHRESULT
  990. NUM2WORDZ
  991. BREAK1
  992. MOUSE1
  993. SCI2DEC1b
  994. SUSING1Q
  995. SUSING2
  996. EDITORFILENAMESAVE
  997. TREEDIRECTIONS
  998. TREEWAITV
  999. ORDER
  1000. TREEHEADING
  1001. REQUIRE1B
  1002. GENRESPONSE
  1003. 123DIREC
  1004. ASMINPUTHELP
  1005. PICKTAGHELP
  1006. STRINPUTHELP<
  1007. FSINPUTHELP]
  1008. VSINPUTHELP
  1009. SSINPUTHELP
  1010. GENBIGRESPONSE#
  1011. MARRAYS
  1012. MARRAYS1
  1013. DATEDEMO
  1014. ENVIRONMENTDEMO
  1015. NOBAR.
  1016. U    ERRORTEXT
  1017. MUSCLE5
  1018. SUPERSHELL'
  1019. CLOCK
  1020. SEARCHVOLUME
  1021. SEARCHPATHk
  1022. INIT1
  1023. INIT2
  1024.